package com.marketing.tenant.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.marketing.tenant.entity.TenantConfig;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 租户配置Mapper接口
 */
@Mapper
public interface TenantConfigMapper extends BaseMapper<TenantConfig> {

    /**
     * 根据租户ID获取所有配置
     * @param tenantId 租户ID
     * @return 租户配置列表
     */
    List<TenantConfig> selectByTenantId(@Param("tenantId") Long tenantId);

    /**
     * 根据租户ID和配置组获取配置
     * @param tenantId 租户ID
     * @param configGroup 配置组
     * @return 租户配置列表
     */
    List<TenantConfig> selectByTenantIdAndGroup(@Param("tenantId") Long tenantId, 
                                                @Param("configGroup") String configGroup);

    /**
     * 根据租户ID、配置组和配置键获取单个配置
     * @param tenantId 租户ID
     * @param configGroup 配置组
     * @param configKey 配置键
     * @return 租户配置
     */
    TenantConfig selectByTenantIdAndKey(@Param("tenantId") Long tenantId, 
                                        @Param("configGroup") String configGroup,
                                        @Param("configKey") String configKey);

    /**
     * 批量插入或更新租户配置
     * @param configs 配置列表
     * @return 影响行数
     */
    int batchInsertOrUpdate(@Param("configs") List<TenantConfig> configs);

    /**
     * 根据租户ID删除所有配置
     * @param tenantId 租户ID
     * @return 影响行数
     */
    int deleteByTenantId(@Param("tenantId") Long tenantId);
}